# 第 12 章 RPC 框架实现

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 一、前言

解耦就是让程序代码块像积木一样

我个人特别喜欢像乐高和颗粒积木这样的玩具,通过一些基本固定的形状和接插引脚,就能搭出很多不同物件和场景,比如:大楼、汽车、马里奥等等。

通过这些场景与编程开发的融合理解,一般我们可以把现实生活中出现的设计运用到代码逻辑实现中。就像我们要去做一个商品售卖的平台,那么可以考虑一个较大的超市,从入口往里看,超市会有展台、活动区、收银、货架、促销等等,而这些服务都是呈模块区域的。这在我们程序设计中也可以把各类服务抽象出一个个实现的领域,这些领域相对独立,同时也可以让领域实现不予业务逻辑强关联,只有在组合使用时候,再串入业务寓意。这就像积木一样,每一块积木并没有特定的场景,只有组合在一起才是一个具体的物件

如果你能这样设计程序,那么你的代码逻辑也将变得高内聚、低耦合、易于维护和扩展。

# 二、需求背景

本章节我们要实现一个简易版的 RPC 框架,那么这里的需求背景就是 RPC 是什么场景下,要解决什么问题,而出现的。

大部分在互联网公司做研发的人员,都会用到 RPC 框架,它们可能是 Dubbo、gRPC、Thrift,也可能是公司自研的 RPC 框架。但可能大部分研发人员并不知道 RPC 的原理以及为什么使用 RPC,仅仅是把 RPC 当做工具应用。

RPC 的主要解决的问题是让构建分布式应用场景更容易,在提供了强大的远程调用服务时不破坏本地调用的语意简易性。为实现此目标,RPC 框架了提供了透明的调用机制,让使用者可以可以像调用本地方法一样使用 RPC 服务。

RPC 可以做到服务间的解耦、部署的灵活和极强的扩展性,所以以 RPC 为支撑的微服务才得以不断的实现。